package top.tocchen.service;

import org.apache.ibatis.annotations.Param;
import top.tocchen.entity.CompanyEntity;

import java.util.List;

/**
 * @author tocchen
 * @date 2023/2/11 14:21
 * @since jdk 1.8
 **/
public interface CompanyService {
    /**
     * 分页查询 所有公司
     * @param current 当前页
     * @param pageSize 每页个数
     * @return 查询结果集合
     */
    List<CompanyEntity> queryPageAllCompany( int current, int pageSize);

    /**
     * 通过id字段 查询公司
     * @param id id
     * @return 公司对象
     */
    CompanyEntity queryCompanyById( String id);

    /**
     * 通过 id字段 删除公司
     * @param id id
     * @return 返回结果 1代表删除成功 其他代表删除失败
     */
    int removeCompanyById( String id);

    /**
     * 通过 对象中的id字段 更新公司信息
     * @param companyEntity 公司对象
     * @return 返回结果 1代表删除成功 其他代表删除失败
     */
    int updateCompanyById(CompanyEntity companyEntity);

    /**
     * 通过id字段 更改公司状态
     * @param id id
     * @return 返回结果 1代表删除成功 其他代表删除失败
     */
    int updateCompanyStatusById( String id);

    /**
     * 通过id字段更改公司的私发密钥
     * @param id id
     * @param signKey 密钥
     * @return 返回结果 1代表删除成功 其他代表删除失败
     */
    int updateCompanySignKeyById( String id, String signKey);

    /**
     * 添加公司
     * @param companyEntity 公司对象
     */
    void saveCompany(CompanyEntity companyEntity);


    /**
     * 模糊分页查询 查询公司名称、公司编号、公司地址及、负责人、负责人电话
     * @param parameter 条件
     * @param current 开始
     * @param pageSize 每页大小
     * @return 查询结果集
     */
    List<CompanyEntity> queryCompanyLikeNameCodeAddress( String parameter,
                                                         int current,
                                                         int pageSize);
    /**
     * 分页总数
     * @param parameter 条件
     * @return 总数
     */
    int queryPageCount(String parameter);

    /**
     * 判断公司是否存在
     * @param companyName 公司名称
     * @return 返回结果 0代表不存在
     */
    int queryCompanyNameExist(String companyName);

    /**
     * 查询星级公司
     * @return  List CompanyEntity
     */
    List<CompanyEntity> queryStarCompany();
}
